define(['bootstrapTable','layer','validate','drawingManager'],function (bootstrapTable,layer,validate,drawingManager) {
    return{
        init:function () {
            console.log("辖区管理");
            showData();
            submitCallRecords()
            /*检索*/
            $("#search").click(function(){

                $('#dataGrid').bootstrapTable("refresh");

            })
        },
        initEdit:function () {
            handleType = $("#handleType").val();
            boundary = $("#boundary").val();
            center = $("#center").val();
            lv = $("#lv").val();
            if(handleType){
                switch (handleType) {
                    case "add":addHandle();break;
                    case "update":updateHandle();break;
                    case "show":showHandle();break;
                }
            }
        }
    };

    //表格处理
    function showData(){
        //时间绑定
        window.openEvent={
            'click #showMap':function (e,value,row,index) {
                layer.open({
                    type:2,
                    title:"查看【"+row.name+"】",
                    anim:1,
                    closeBtn:1,
                    area:['80%','90%'],
                    content:'positionAreaController/goEdit?handleType=show&id='+row.id,
                    end: function (){
                        console.log("无操作");
                    },
                });
            },
            //删除行
            'click #delete': function (e, value, row, index) {
                layer.confirm('确定要删除选中记录吗 ？', {
                    icon: 3,
                    btn: ['确定', '取消']
                }, function (index, layero) {
                    $.ajax({
                        url: '/positionAreaController/delByIds',
                        type: "post",
                        data: "ids=" + row.id,
                        dataType: "JSON",
                        success: function (data) {
                            if (data.code == 10001) {
                                layer.msg(data.msg, {
                                    icon: 1,
                                    time: 1000
                                });
                                $('#dataGrid').bootstrapTable('refresh')
                            }
                            layer.msg(data.msg);
                        }
                    });
                });
            }
        };

        $('#dataGrid').bootstrapTable({
            url: "/positionAreaController/pageSelect", // 获取表格数据的url
            method:'post',
            cache: false,       // 设置为 false 禁用 AJAX 数据缓存， 默认为true
            striped: true,      //表格显示条纹，默认为false
            pagination: true,   // 在表格底部显示分页组件，默认false
            contentType:'application/x-www-form-urlencoded',
            sidePagination: 'server', // 设置为服务器端分页，必要
            queryParamsType : "",
            queryParams:function(params){
                return tem={
                    rows:params.pageSize,
                    page:params.pageNumber,
                    name:$("#searchName").val(),
                }
            },
            clickToSelect:false,
            columns: [
                {
                    title: '序号',
                    align: 'center',
                    formatter:showNumber,
                    width:'1%'
                },{
                    field: 'ck',
                    checkbox: true,
                    align: 'center',
                    valign: 'middle',
                    width:'1%'
                },
                {
                    field: 'name',
                    title: '辖区名称',
                    align: 'center',
                    valign: 'middle',
                    width:'16%'

                }, {
                    field: 'city',
                    title: '所属地区',
                    align: 'center',
                    valign: 'middle',
                    width:'16%'
                }, {
                    field: 'type',
                    title: '辖区类型',
                    align: 'center',
                    valign: 'middle',
                    width:'16%',
                    formatter:function(value,row,index){
                        var resultStr = "";
                        if(value == "1"){
                            resultStr = "自定义辖区";
                        }else{
                            resultStr = "基础辖区";
                        }
                        return resultStr;
                    }
                },{
                    field: 'handle',
                    title: "操作",
                    align: 'center',
                    valign: 'middle',
                    width:'16%',
                    events:openEvent,
                    formatter:function(value,row,index){
                        var resultStr = "";
                        if(row.type=="1"){
                            resultStr = ['<button class="btn btn-xs btn-info btn-operator-gew" id="showMap"><i class="fa fa-map-marker"></i></btton>','<button class="btn btn-xs btn-danger" id="delete"><i class="fa fa-trash-o"></i></button>'].join("");
                        }else{
                            resultStr = ['<button class="btn btn-xs btn-info btn-operator-gew" id="showMap"><i class="fa fa-map-marker"></i></btton>'].join("");
                        }
                        return resultStr;
                    }
                }
            ],
            onLoadSuccess: function(data){  //加载成功时执行

            },
            onLoadError: function(){  //加载失败时执行
                //console.info("加载数据失败");
            }
        });
    }
    /**
     *  添加
     */
    function submitCallRecords(){
        $('.addBtn').on('click',function(){
            layer.open({
                type:2,
                title:"新增",
                anim:1,
                closeBtn:1,
                area:['80%','90%'],
                content:'positionAreaController/goEdit?handleType=add',
                end: function (){
                    // var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
                    // parent.layer.close(index);
                    // parent.$('#dataGrid').bootstrapTable('refresh')
                    $('#dataGrid').bootstrapTable('refresh');
                },
            });
        });
    }

    function showNumber(value, row, index){
        var options = $('#dataGrid').bootstrapTable('getOptions');
        return options.pageSize*(options.pageNumber-1)+index + 1;
    }

    /**  操作设置 **/

    var handleType;//页面类型 add-添加，updagte-修改，show-查看
    var boundary;//区域编写坐标点字符串
    var center;//中心点经纬度
    var lv;//地图层级

    //新增页面的处理
    function addHandle(){
        $("#toolsPanl").css("display","block");
        //重绘辖区按钮事件绑定
        $("#drawBtn").bind("click",function(){
            drawArea();
        });
        //检索按钮事件绑定
        $("#searchBtn").bind("click",function(){
            search();
        });
        var point = new BMap.Point(106.688322,26.599066); //设置地图中心点
        initMap(point,12);
        initDrawingManager();
    }

    //修改页面的处理
    function updateHandle(){
        console.log("修改页面");
    }

    //展示页面的处理
    function showHandle(){
        var centerArr = center.split(",");
        var point = new BMap.Point(centerArr[0],centerArr[1]); //设置地图中心点
        initMap(point,lv);
        var styleOptions = {
            strokeColor: "#00F5FF", //边线颜色。
            fillColor: "#00F5FF", //填充颜色。当参数为空时，圆形将没有填充效果。
            strokeWeight: 3, //边线的宽度，以像素为单位。
            strokeOpacity: 0.8, //边线透明度，取值范围0 - 1。
            fillOpacity: 0.6, //填充的透明度，取值范围0 - 1。
            strokeStyle: 'solid' //边线的样式，solid或dashed。
        };
        var polygon = new BMap.Polygon(boundary, styleOptions);
        map.addOverlay(polygon);
    }

    var map;//地图
    var drawingManager;//绘制区域
    var overlay;//绘制之后的区域

    //初始化页面
    function initMap(point,zoom){
        map = new BMap.Map("mapDiv",{enableMapClick: false}); //初始化地图
        map.centerAndZoom(point, zoom);
        map.enableScrollWheelZoom();//启动滚动缩进
        //设置地图的样式
        var mapStyle = {
            features: ["road", "building", "water", "land"],//隐藏地图上的poi
        }
        map.setMapStyle(mapStyle);  //设置地图的样式
    }

    //初始化绘图工具
    function initDrawingManager(){
        var styleOptions = {
            strokeColor: "#00F5FF", //边线颜色。
            fillColor: "#00F5FF", //填充颜色。当参数为空时，圆形将没有填充效果。
            strokeWeight: 3, //边线的宽度，以像素为单位。
            strokeOpacity: 0.8, //边线透明度，取值范围0 - 1。
            fillOpacity: 0.6, //填充的透明度，取值范围0 - 1。
            strokeStyle: 'solid' //边线的样式，solid或dashed。
        };
        //实例化鼠标绘制工具
        drawingManager = new BMapLib.DrawingManager(map, {
            isOpen: false, //是否开启绘制模式
            enableDrawingTool: false, //是否显示工具栏
            drawingToolOptions: {
                anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
                offset: new BMap.Size(40, 5), //偏离值
                scale: 0.8,
                drawingModes: [
                    BMAP_DRAWING_POLYGON]//多边形
            },
            polygonOptions: styleOptions
            //多边形的样式
        });
        //添加鼠标绘制工具监听事件，用于获取绘制结果
        drawingManager.addEventListener('overlaycomplete', function (e) {

            //绘制之后的区域放入数组，方便后续清理
            overlay=e.overlay
            //根据可视点重新设置地图中心和层级大小
            var v = map.getViewport(e.overlay.getPath());//通过坐标数据得到中心点
            // map.centerAndZoom(v.center, v.zoom);//不需要切换地图
            var center = v.center.lng+","+v.center.lat;
            var city = map.Jg;
            var boundary = JSON.stringify(e.overlay.getPath());
            var lv = v.zoom;

            layer.prompt({title: '输入辖区名称并确认', formType: 0}, function(text, index){
                $.ajax({// 添加
                    url: "/positionAreaController/add",
                    dataType: "json",
                    type: "post",
                    data: {
                        "boundary": boundary,//边界集合
                        "center": center,//中心
                        "city": city,//所属城市
                        "name": text,//名称
                        "lv": lv//地图层级
                    },
                    success: function (result) {
                        if(result.code == 10001){
                            layer.close(index);
                            layer.msg("添加成功！",{time: 2000});
                            map.clearOverlays();//每次只能添加一个
                        }else{
                            layer.msg("添加失败，请联系管理员！",{time: 2000});
                        }
                    },
                    error:function(){
                        layer.msg("添加失败，请联系管理员！",{time: 2000});
                        layer.close(index);
                    }
                })
            });
        })
    }

    //绘制多边形
    function drawArea(){
        map.clearOverlays();//每次只能添加一个
        drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
        drawingManager.open();
    }

    var marker;
    //地图检索
    function search(){
        var local = new BMap.LocalSearch(map);
        local.setSearchCompleteCallback(function(rs){
            if(local.getStatus() == BMAP_STATUS_SUCCESS){
                console.log(rs.getPoi(0));
                map.removeOverlay(marker);
                marker = new BMap.Marker(rs.getPoi(0).point);
                map.addOverlay(marker);
                map.panTo(rs.getPoi(0).point);
            }
        });
        local.search($("#searchTest").val());
    }

})